home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / fortran / toolpack.000 / toolpack / toolpack1.2 / tables / ZSAALL.MAC.f < prev    next >
Encoding:
Text File  |  1989-03-04  |  3.4 KB  |  140 lines

  1. C---------------------------------------------------------
  2. C    TOOLPACK/1    Release: 1.1
  3. C---------------------------------------------------------
  4. C
  5. C  ZSAGET - 05 MAR 84
  6. C           TIE LIBRARY
  7. C           TABLES SUPPLEMENTARY LIBRARY
  8. C
  9. C  GET AN ELEMENT FROM THE SPARSE ARRAY, CURRENTLY A LINEAR SEARCH
  10. C  IS USED FOR THE ARRAY REFERENCES, A HASHED SEARCH MAY BE USED
  11. C  IN A LATER RELEASE
  12. C
  13.       INTEGER FUNCTION ZSAGET(VALUE, XIND, YIND, ARRAY)
  14.  
  15.       INTEGER XIND, YIND, VALUE, I, OFFSET
  16.       INTEGER ARRAY(*)
  17.  
  18.       ZSAGET = -1
  19.       IF(ARRAY(1) .NE. 122)     RETURN
  20.       ZSAGET = -2
  21.  
  22.       DO 10 I = 1, ARRAY(5)
  23.         OFFSET = 8 + ((I - 1) * 3)
  24.         IF(ARRAY(OFFSET + 1) .EQ. XIND) THEN
  25.           IF(ARRAY(OFFSET + 2) .EQ. YIND) THEN
  26.             VALUE = ARRAY(OFFSET + 3)
  27.             RETURN
  28.           ENDIF
  29.         ENDIF
  30.    10 CONTINUE
  31.  
  32.       VALUE = ARRAY(3)
  33.  
  34.       RETURN
  35.       END
  36. C----------------------------------------------------------------------
  37. C
  38. C  ZSAINT - 05 MAR 84
  39. C           TIE LIBRARY
  40. C           TABLES SUPPLEMENTARY LIBRARY
  41. C
  42. C  INITIALISE AN ARRAY AS A SPARSE ARRAY
  43. C
  44. C  AN OVERHEAD OF 8 LOCATIONS RESERVED BY THE ROUTINES. NOT ALL THE
  45. C  RESERVED LOCATIONS ARE USED AT PRESENT.
  46. C
  47.       INTEGER FUNCTION ZSAINT(ARRAY, SIZE, DEFALT)
  48.  
  49.       INTEGER SIZE, DEFALT
  50.       INTEGER ARRAY(*)
  51.  
  52.       ZSAINT = -1
  53.       IF(SIZE .LE. 9) RETURN
  54.  
  55. C  IDENTIFY THE ARRAY AS A SPARSE ARRAY
  56.       ARRAY(1) = 122
  57. C  THE SIZE OF THE ARRAY
  58.       ARRAY(2) = SIZE
  59. C  THE DEFAULT RESPONSE
  60.       ARRAY(3) = DEFALT
  61.  
  62. C  THE MAXIMUM NUMBER OF ELEMENTS THAT CAN BE STORED IN THE BUFFER
  63.       ARRAY(4) = (SIZE - 8) / 3
  64. C  THE NUMBER OF ELEMENTS CURRENTLY STORED IN THE BUFFER
  65.       ARRAY(5) = 0
  66. C  UNUSED
  67.       ARRAY(6) = 0
  68.       ARRAY(7) = 0
  69.       ARRAY(8) = 0
  70.  
  71.       ZSAINT = ARRAY(4)
  72.  
  73.       RETURN
  74.       END
  75. C----------------------------------------------------------------------
  76. C
  77. C  ZSAPUT - 05 MAR 84
  78. C           TIE LIBRARY
  79. C           TABLES SUPPLEMENTARY LIBRARY
  80. C
  81. C  PUT AN ELEMENT INTO THE SPARSE ARRAY, CURRENTLY A LINEAR SEARCH
  82. C  IS USED FOR THE ARRAY REFERENCES, A HASHED SEARCH MAY BE USED
  83. C  IN A LATER RELEASE
  84. C
  85.       INTEGER FUNCTION ZSAPUT(VALUE, XIND, YIND, ARRAY)
  86.  
  87.       INTEGER VALUE, XIND, YIND, OFFSET, I
  88.       INTEGER ARRAY(*)
  89.  
  90.       ZSAPUT = -1
  91.       IF(ARRAY(1) .NE. 122)     RETURN
  92.       ZSAPUT = -100
  93.       IF(ARRAY(4) .EQ. ARRAY(5)) RETURN
  94.       ZSAPUT = -2
  95.  
  96.       DO 10 I = 1, ARRAY(5)
  97.         OFFSET = 8 + ((I - 1) * 3)
  98.         IF(ARRAY(OFFSET + 1) .EQ. XIND) THEN
  99.           IF(ARRAY(OFFSET + 2) .EQ. YIND) THEN
  100.             ARRAY(OFFSET + 3) = VALUE
  101.             RETURN
  102.           ENDIF
  103.         ENDIF
  104.    10 CONTINUE
  105.  
  106.       OFFSET   = 8 + (ARRAY(5) * 3)
  107.       ARRAY(5) = ARRAY(5) + 1
  108.       ARRAY(OFFSET + 1) = XIND
  109.       ARRAY(OFFSET + 2) = YIND
  110.       ARRAY(OFFSET + 3) = VALUE
  111.  
  112.       RETURN
  113.       END
  114. C----------------------------------------------------------------------
  115. C
  116. C  ZSATYP - 05 MAR 84
  117. C           TIE LIBRARY
  118. C           TABLES SUPPLEMENTARY LIBRARY
  119. C
  120. C  RECOVER INFORMATION ABOUT AN ARRAY SET UP FOR SPARSE ARRAY HANDLING
  121. C
  122.       INTEGER FUNCTION ZSATYP(ARRAY, DEFALT, FREE)
  123.  
  124.       INTEGER DEFALT, FREE
  125.       INTEGER ARRAY(*)
  126.  
  127.       ZSATYP = -1
  128.       IF(ARRAY(1) .NE. 122) RETURN
  129.  
  130. C  THE DEFAULT RESPONSE
  131.       DEFALT = ARRAY(3)
  132.  
  133. C  THE MAXIMUM NUMBER OF ELEMENTS THAT CAN BE STORED IN THE BUFFER
  134.       FREE = ARRAY(4) - ARRAY(5)
  135.  
  136.       ZSATYP = -2
  137.  
  138.       RETURN
  139.       END
  140.